//
//  TZWStatus.swift
//  Sinaweibotzw
//
//  Created by 檀志文 on 16/4/13.
//  Copyright © 2016年 ios檀志文. All rights reserved.
//

import UIKit

class TZWStatus: NSObject {

//    微博的创建时间
    var created_at: String?
//    微博的id
    var id: Int64 = 0
//    微博的信息内容
    var text: String?
//    微博的来源
    var source: String?{
    didSet{
//      当kvc处理赋值，我们重新处理来源
        if let newSource = source{
//            截取字符串 String
            guard let firstRange  = newSource.rangeOfString("\">") else{
            print ("没有匹配\">");
            return
            }
            guard let secondRange = newSource.rangeOfString("</a>") else{
                print("没有匹配</a>")
                return
            }
            
            // 拼接来源的范围 360安全浏览器 (60 67) 60..<68  60 是firstRange的结尾(endIndex)  68:
            let range = firstRange.endIndex..<secondRange.startIndex
            source = "来自 " + newSource.substringWithRange(range)
        }
    }
    }
    
    
    
//    微博的配图
    var pic_urls: [[String: AnyObject]]? {
        didSet {
             // 当KVC给pic_urls赋值时,将pic_urls转成NSURL数组方便外面的人来使用
            let count = pic_urls?.count ?? 0
        
            if count == 0{
                return
            }
            // 创建storePicutreURLs数组保存NSURL
            storePicutreURLs = [NSURL]()
            // 有图片要显示
            for dict in pic_urls! {
                // 获取到每个字典,解析thumbnail_pic所对应的value,value是一个图片的地址(String)
                let urlString = dict["thumbnail_pic"] as! String
                
                let url = NSURL(string: urlString)!
                
                storePicutreURLs?.append(url)
            }
        }
    }
    /// 模型提供好用一点的图片NSURL数组
    var storePicutreURLs: [NSURL]?
    
    
//    用户模型, 服务器返回的用户数据是字典,需要我们自己来转模型
    var user: TZWUser?
    
// 被转发的原微博信息字段，当该微博为转发微博时返回
    var retweeted_status: TZWStatus?
    
//    字典转模型
    init(dict: [String: AnyObject]) {
        super.init()
        setValuesForKeysWithDictionary(dict)
    }
//    字典中的key在模型中找不到对应的属性
    
    override func setValue(value: AnyObject?, forKey key: String) {
        if key == "user" {
            //            再判断value是不是字典
            if let dict = value as? [String: AnyObject] {
                
                user = TZWUser(dict: dict)
            }
            //            一定要返回,如果不返回,又会调用 super.setValue
            return
        }
        // 拦截retweeted_status这个key，不要系统来KVC,我们自己来赋值
        // 1.key == retweeted_status, 2. value可以转成字典
        if key == "retweeted_status", let dict = value as? [String: AnyObject] {
            // 字典转模型,并且赋值给retweeted_status属性
            retweeted_status = TZWStatus(dict: dict)
            
            // 一定要记得return
            return
        }
        super.setValue(value, forKey: key)
        
    }
    
    
    
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
        
    }
    
//    对象的打印
    override var description: String {
        get {
            let keys = ["created_at", "id", "text", "source", "pic_urls"]
            
            // 通过key在模型中招属性的值,找到属性的值,将key和值,拼接到字典里面
            
            return "\n \t 微博模型: \(self.dictionaryWithValuesForKeys(keys).description)"
        }
    }
    
}
